package cn.iocoder.devlop.module.annual.report.forguaranteeinfo.service;

import cn.iocoder.devlop.module.annual.report.forguaranteeinfo.controller.vo.ForguaranteeinfoCreateReqVO;
import cn.iocoder.devlop.module.annual.report.forguaranteeinfo.controller.vo.ForguaranteeinfoOverwriteVO;
import cn.iocoder.devlop.module.annual.report.forguaranteeinfo.controller.vo.ForguaranteeinfoUpdateReqVO;
import cn.iocoder.devlop.module.annual.report.forguaranteeinfo.dal.dataobject.ForguaranteeinfoDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 企业年报对外提供保证担保信息 Service 接口
 *
 * @author 超级管理员
 */
public interface ForguaranteeinfoService {

    /**
     * 创建企业年报对外提供保证担保信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createForguaranteeinfo(@Valid ForguaranteeinfoCreateReqVO createReqVO);

    /**
     * 更新企业年报对外提供保证担保信息
     *
     * @param updateReqVO 更新信息
     */
    void updateForguaranteeinfo(@Valid ForguaranteeinfoUpdateReqVO updateReqVO);

    /**
     * 删除企业年报对外提供保证担保信息
     *
     * @param id 编号
     */
    void deleteForguaranteeinfo(String id);

    /**
     * 获得企业年报对外提供保证担保信息
     *
     * @param id 编号
     * @return 企业年报对外提供保证担保信息
     */
    ForguaranteeinfoDO getForguaranteeinfo(String id);

    /**
     * 获得企业年报对外提供保证担保信息列表
     *
     * @return 企业年报对外提供保证担保信息列表
     */
    List<ForguaranteeinfoDO> getForguaranteeinfoList(String regno, String ancheyear);


    void deleteForguaranteeinfoAll(String regno, String ancheyear);

    void createForguaranteeinfoByList(String regno, String ancheyear, List<ForguaranteeinfoCreateReqVO> forguaranteeinfoList);

    void overwriteForguaranteeinfo(ForguaranteeinfoOverwriteVO updateReqVO);
}
